package edu.cmu.mism.dgjava.algorithm;

import org.eclipse.core.runtime.IProgressMonitor;

import edu.cmu.mism.dgjava.data.models.option.OptionCalculationResult;

/**
 * 
 * @author Christian
 * 
 */
public interface IOptionAlgorithm {

	/**
	 * Calculates the option price and the associated data outputs for the given
	 * underlying type and pricing models
	 * 
	 * @see OptionCalculationResult
	 * @param monitor
	 * @return the calculation results with the given input
	 */
	public OptionCalculationResult calculate(IProgressMonitor monitor);

	/**
	 * Gets the underlying type model associated with this algorithm instance
	 * 
	 * @return the underlying type model
	 *         <p>
	 *         Possible types of the returned instance: <tt>Equity</tt>,
	 *         <tt>Currency</tt>, <tt>Index</tt> and <tt>Futures</tt>
	 *         </p>
	 */
	public Object getUnderlyingTypeModel();

	/**
	 * Gets the pricing model associated with this algorithm instance
	 * 
	 * @version 1.0
	 * @return the pricing model
	 *         <p>
	 *         Possible types of the returned pricing model:
	 *         <tt>BinomialAmerican</tt> and <tt>BinomialEuropean</tt>
	 *         </p>
	 */
	public Object getPricingModel();

}
